/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.losalpes.catalog;

import com.losalpes.persistence.entity.Mueble;
import com.losalpes.persistence.entity.TipoMueble;
import java.util.List;

/**
 *
 * @author c.alvarez947
 */
public interface ICatalogService {

    /**
     * Inserta un nuevo mueble
     * @param cMueble
     */
    void add(Mueble cMueble);

    /**
     * Retorna la lista de muebles existentes en el sistema
     * @return Colección de muebles
     */
    List findAllMuebles();

    /**
     * Retorna un mueble, buscado por su referencia
     * @param ref Identificador del mueble
     * @return Objeto de tipo mueble
     */
    Object findByRef(Object ref);

    /**
     * Permite obtener los muebles que pertenecen a un tipo de mueble en particular
     * @param tipoMueble Tipo de muebles por buscar
     * @return Colección de muebles del tipo seleccionado
     */
    List<Mueble> findByType(TipoMueble tipoMueble);

    /**
     * Modifica un mueble
     * @param obj Mueble
     */
    void update(Object obj);

    /**
     * Elimina un mueble
     * @param obj Mueble
     */
    void delete(Object obj);

    /**
     * Actualiza el precio y la cantidad de un mueble, luego de
     * buscarlo por su referencia
     * @param ref Referencia del mueble
     * @param precio Precio del mueble
     * @param cantidad Cantidad en inventario
     * @return
     */
    Object setPrecioCantidadByRef(Object ref, double precio, double cantidad);

    /**
     * Modifica un mueble de la lista
     * @param obj Mueble
     */
    void updatePrecioCantidad(Object obj);
}
